home *** CD-ROM | disk | FTP | other *** search
/ Alles Voor Internet / Tout Pour Internet / alles voor internet.iso / MacInternet™ / Utilities / ObiWan-501 / Documentation next >
Text File  |  1994-10-04  |  16KB  |  262 lines

  1. ObiWan v5.0.1 © Peter Lewis, 1992-94.
  2.  
  3. This program are Freeware.
  4.  
  5. ObiWan is dedicated to beta testers and freeware and shareware authors.
  6.  
  7. “ObiWan is a must-have”
  8.    - Australian&New Zealand MacUser, Pg 88, Nov 1993.
  9.  
  10. • Contents
  11.  
  12.       What ObiWan Does
  13.       Features
  14.       Using ObiWan
  15.       Using Master Yoda
  16.       Database Format
  17.       How It Works
  18.       Limitations
  19.       Small Print
  20.       Warranty
  21.       Fine Print
  22.       Version History
  23.       Acknowledgements
  24.  
  25. • What ObiWan Does
  26.  
  27. ObiWan is a general help system.  You can create several databses and ObiWan will let you rapidly find information from them.  It displays the information by popping up a floating window so the information can be displayed at any time in any program.  Portions of the information can then be sent to the front window as if you had typed it.  The main use of all this is to access the programming database created from Apple’s PInterfacesHelp file and many other sources, which includes the procedures, traps, global variables and errors available up to System 7.  Also included is a word list and Perl help database.  ObiWan requires System 7.1 (for the Text Services Manager).
  28.  
  29. • Features
  30.  
  31. The Force file includes all the System 7 information.
  32. The Force database is quite up to date, including lots of the new managers.
  33. Any number of databases may exist, only one of which is active at any time.
  34. First word searches are instantaneous, general searches are very quick.
  35. Databases are plain text files and can be edited at any time they are not active.
  36. Databases are reindexed automatically when the file size changes.
  37. Database file size is unlimited.
  38. Databases can have any number of entries.
  39. There is absolutely no dependency on MacTCP at all.
  40.  
  41. Caveats:
  42. Clicks occasionally get lost.  Anyone from Apple care to comment why sometimes jGNEFilter isn’t called?
  43.  
  44. Keys typed in to ObiWan also go into a DA window if a DA is front-most.
  45.  
  46. The Finder doesn't like having keys dumped at it for some reason.
  47.  
  48. • Using ObiWan
  49.  
  50. Make an alias to ObiWan and drop it in the Startup Items folder in your System folder.  Launch it.
  51.  
  52. ObiWan silently waits in the background for you to press cmd-` at which time it will pop up a window and let you find entries in the database.  Type cmd-` (hold down the cloverleaf key and press the back-quote key (`)).  Read the help there, or type "a" and a return to redisplay the help text.  Click on the arrows to move thru the database.  Double-click on words to find their entry.
  53.  
  54. NOTE: sometimes clicks will disappear.  This is due to a bug in the system, and there is nothing I can do about it at this stage.
  55.  
  56. The buttons and their respective keys are, from left to right:
  57.  
  58. Lookup <return>
  59. Search Anywhere <shift-return>
  60. Move Backwards <cmd-,>
  61. Move Forewards <cmd-.>
  62. Jump Back <cmd-[>
  63. Type Word <cmd-enter>
  64. Type Line <cmd-option-enter>
  65. Type Procedure <cmd-shift-enter>
  66. Type Entire Entry <cmd-option-shift-enter>
  67. Play sound at launch (toggles the preference)
  68. Play sound at invokation (toggles the preference)
  69. About
  70. Change Database or Parse Procedure <option-return>
  71.  
  72. NOTE: The startup and invokation sounds have been removed from the Metrowerks distributed version to avoid any copyright problems.
  73.  
  74. The Force database is partially produced by parsing the PInterfacesHelp file which I have license from Apple.  Thanks to Rick Fleischman, Barbara Napier, and Apple Computer, Inc. for waiving the fee to allow the Force file to be distributed.  The Force file contains all the System 6 and 7 procedures, constants, errors, and global variables.  You can find these by opening ObiWan (cmd-`), typing in the start of the name (eg HOpen) and pressing return.  You can then insert the routine into THINK Pascal or C or MPW by clicking the third insert button (the one that looks like a procedure) (or by typing cmd-shift-enter).  Note that there is a Pascal bias in this database because I am biased towards Pascal, but there is no reason some bright spark couldn’t produce a C equivalent database.  You can also look up traps, errors, globals by searching for:
  75. trapA000 - four digit hex number, starting with A
  76. err-108 - decimal number, starting with a minus for OSErrs
  77. err25 - decimal number, positive for system errors.
  78. global910 - three digit hex number for global variables. (QuickDraw globals are not included)
  79.  
  80. You can change to using the C Parse Procedure by typing “C<option-return>”
  81.  
  82. The Force database is not special in any way (except that it contains the programming information for System 7).  You can create other databases and switch between them by typing the name <name> and clicking the change button (furthest to the right) (or typing <option-return>).  Other databases that are might be available include: a word dictionary (included); a thesaurus (both based on Roget's thesaurus from the Gutenburg project); a perl database (included); a Newton database (out of date now) and possibly a unix database (similar to Force, but for unix commands).
  83.  
  84. • Using Master Yoda
  85.  
  86. Launch Master Yoda.  
  87.  
  88. Click the Select button to select a database, then you can get Stats on the database, sort it, add another (sorted!) database, index the database (but that is done automatically for you anyway), or change the word set characters for the database.
  89.  
  90. • Database Format
  91.  
  92. An ObiWan database is just a TEXT file with a strict format, plus some resources in the resource fork, including the index (which is recalculated if the file size changes) the word character set.  The format of the text file is (by example):
  93.  
  94. =|
  95. indexword data
  96. general stuff, up to 10 lines, each up to 80 characters, ending with a|
  97. nextindexword more data
  98. more stuff|
  99. verynextindexedword more and more data
  100. finally ending with|
  101. =|
  102.  
  103. The file should be sorted by the indexword (Master Yoda’s sort sorts by the entire entry so if you want related parts to stay in the same order when the database is sorted, they must be ordered in that way).  The sort order is straight ASCII, case insensitive.  Yes, I can hear you screaming “No, no, use the language independent sort order that the system defines”, (and yes, I do think that comma should go outside the quote mark irrespective of what the English teachers would have you believe :-) but I wish to be able to distribute a database file that works on all machines without having to be resorted.
  104.  
  105. Let’s see if I can define a BNF for the database format:
  106.  
  107. database ::= "=|" <cr> multiple_entries <cr> "=|" <cr>
  108.  
  109. multiple_entries ::= entry "|" <cr>
  110. multiple_entries ::= entry "|" <cr> multiple_entries
  111.  
  112. entry ::= line
  113. entry ::= line <cr> entry
  114.  
  115. line ::= character
  116. line ::= character | line
  117.  
  118. character ::= chr(9) | chr(32)..chr(126) | chr(128)..chr(255)
  119.  
  120. lines MUST be at most 80 characters, and should fit into the window in Geneva 9.
  121. entries MUST be at most 10 lines.
  122. There is no limit to the file size or number of entries (well, ok, the file size is limited by the file system, but thats not my fault, and the number of entries is obviously limited by the size of the file...)
  123.  
  124. Note:  The file absolutely must start and end with =|<cr>.  No trailing blank lines.
  125.  
  126. • How It Works
  127.  
  128. ObiWan uses the Text Services manager to display the floating window (and thus requires System 7.1), and patches into the jGNEFilter list to receive events, although not all clicks manage to get to the jGNEFilter list, which is unfortunate.
  129.  
  130. Later on, it watches keypresses and if a match for the popup key appears it opens the display window and accepts key strokes.  When you hit return it takes the first eight letters of the word (padding with zeros), and scans thru an index to find where in the database that word comes, then it positions itself in the database and scans the entries until it finds a matching one and displays that.  The “anywhere” search is done using Boyer-Moore search routine - this is one of the most elegant and simple routines I’ve ever seen, if you ever do any searching code, check this out, it is hardly any more complicated than a brute force search, but takes time *inversely* proportional to the length of the search string!
  131.  
  132. Entering characters into the front application is done by simply returning key down events (with key codes) in response to null events.  Word still gets confused (because it only calls WNE if there is an event waiting), but thats to be expected.
  133.  
  134. • Limitations
  135.  
  136. ObiWan & Master Yoda require System 7.1 or later.
  137.  
  138. There is a problem with clicks in ObiWan’s display area sometimes being ignored.  This happens because the click is sometimes stolen before it gets to the jGNEFilter.  I have no idea why this would happen, nor why it happens only sometimes. If anyone has any ideas, please let me know.  
  139.  
  140. There is also a problem that key presses go into DA windows instead of ObiWan.  I don’t really think this is a major problem, but perhaps others disagree.
  141.  
  142. If you quit ObiWan (using ProcessWatcher for example), the icon remains greyed out in the Finder.  This is a bug in the Finder.
  143.  
  144. • Small Print
  145.  
  146. This program is totally free.  That’s right, pay nothing now, pay nothing later (but don’t expect me to send you a steak knife or any jewellery :-).  If you like it and use it you can show your appreciation by:
  147.  
  148. Sending me some Email or a Poastcard.
  149. Donating Blood.
  150. Giving me a free trip to wherever you are, or anywhere else.
  151. Picking up some litter.
  152. Or anything else you feel like doing :-)
  153.  
  154. You MAY NOT DISTRIBUTE this program on any disk costing more than $5 without my explicit permission.
  155.  
  156. • Warranty
  157.  
  158. This program should do what I’ve described in this document.  If it doesn’t, you can simply stop using it.  I’d refund your money, but since it’s free anyway…
  159.  
  160. • Fine Print
  161.  
  162. Peter Lewis hereby disclaims all warranties relating to this software, whether express or implied, including without limitation any implied warranties of merchantability or fitness for a particular purpose.  Peter Lewis will not be liable for any special, incidental, consequential, indirect or similar damages due to loss of data or any other reason, even if Peter Lewis or an agent of his has been advised of the possibility of such damages.  In no event shall Peter Lewis be liable for any damages, regardless of the form of the claim.  The person using the software bears all risk as to the quality and performance of the software.
  163.  
  164. APPLE COMPUTER, INC. ("APPLE") MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, REGARDING MPW.  APPLE DOES NOT WARRANT, GUARANTEE OR MAKE ANY REPRESENTATIONS REGARDING THE USE OR THE RESULTS OF THE USE OF MPW IN TERMS OF ITS CORRECTNESS, ACCURACY, RELIABILITY, CURRENTNESS OR OTHERWISE.  THE ENTIRE RISK AS TO THE RESULTS AND PERFORMANCE OF MPW IS ASSUMED BY YOU.  THE EXCLUSION OF IMPLIED WARRANTIES IS NOT PERMITTED BY SOME STATES.  THE ABOVE EXCLUSION MAY NOT APPLY TO YOU.
  165.  
  166. IN NO EVENT WILL APPLE, ITS DIRECTORS, OFFICERS, EMPLOYEES OR AGENTS BE LIABLE FOR CONSEQUENCTIAL, INCIDENTAL OR INDIRECT DAMAGES (INCLUDING DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS INTERUPTION, LOSS OF BUSINESS INFORMATION, AND THE LIKE) ARISING OUT OF THE USE OR INABILITY TO USE MPW EVEN IF APPLE HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
  167.  
  168. BECAUSE SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITIES FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES, THE ABOVE LIMITATIONS MAY NOT APPLY TO YOU.  Apple's liabilities to you for actual damages for any cause whatsoever, and regardless of the form of the action (whether in contract, tort (including negligence), product liability or otherwise), will be limited to $50.
  169.  
  170. And that goes double for Peter Lewis.
  171.  
  172. US Governement:
  173.         Government End Users:  If you are acquiring the Software and fonts
  174. on behalf of any unit or agency of the United States Government, the
  175. following provisions apply.  The Government agrees:
  176.         (i) if the Software and fonts are supplied to the Department of
  177. Defense (DoD), the Software and fonts are classified as "Commercial
  178. Computer Software" and the Government is acquiring only "restricted rights"
  179. in the Software, its documentation and fonts as that term is defined in
  180. Clause 252.227-7013(c)(1) of the DFARS; and
  181.         (ii) if the Software and fonts are supplied to any unit or agency
  182. of the United States Government other than DoD, the Government's rights in
  183. the Software, its documentation and fonts will be as defined in Clause
  184. 52.227-19(c)(2) of the FAR or, in the case of NASA, in Clause
  185. 18-52.227-86(d) of the NASA Supplement to the FAR.
  186.  
  187. • Version History
  188.  
  189. Still to do -
  190. increase to 15 lines/routine
  191. add thesaurus
  192.  
  193. Yoda:
  194. Finish up Master Yoda
  195. Handle out of disk space errors better
  196. Revamp Yoda’s UI
  197. Master Yoda progress bar needs status display "Parsing" "Sorting" etc.
  198. Temporary files should be placed in the Temporary Items folder 
  199.  
  200. Mike Engber <engber@newton.apple.com>:
  201. App for viewing the database
  202. Font selection (esp a monospaced font)
  203. Way to specify two or more keywords for one entry
  204. Way to escape | characters
  205. Way to more than 10 lines per entry
  206. Better debugging in Master Yoda (display anomolies)
  207.  
  208. Other:
  209. Search all databases, basically pretend that there is only a single database as much as possible.
  210. Decent documentation (any volunteers?)
  211. Double click STR# for Prefs and Parse Proc files.
  212.  
  213. Typing in the ObiWan window when a DA is up puts keys into both!
  214. Clicks sometimes go thru to the background app.
  215.  
  216. Add the appropriate string resource into the ObiWan Preferences and
  217. Pascal Template Procedure so that when you launch them they put up nice
  218. messages saying 'ObiWan Preferences file must be placed in the Obiwan
  219. Folder within your Preferences Folder' and so on.
  220. STR -16397 I think
  221.  
  222. 5.0.1
  223. ~Fixed bug where it writed the prefs out continuously
  224. ~Fixed "bug" where it couldn't find the System 7.5 WDEF (they moved it!)
  225.  
  226. 5.0.0
  227. ~Almost a complete rewrite
  228. ~Use TextServicesManager to display the floating window
  229. ~Change from INIT/CP to Application
  230. ~A way to dynamically switch between insertion procedures.
  231. ~add words
  232. ~Crashes on LC/6.0.7 when you choose Select Parse Proc.
  233. ~colour window
  234.  
  235. 4.0.1
  236. ~Support key codes so it works with terminal apps - still doesn’t work with Word :-)
  237. ~Include the Force database
  238. ~Report errors a bit better
  239. ~Fix MasterYoda parse proc crash
  240.  
  241. 4.0.0d5
  242. ~Balloon Help everywhere - THANKS QUINN!
  243. ~Added C Parse Procedure
  244. ~Improved param block parsing
  245.  
  246. 4.0.0d4
  247. ~Sound play only once every N minutes...
  248. ~Select the destination of the output Force file
  249. ~Add param blocks to database.
  250. ~Sounds should play asynchronously.
  251.  
  252. 4.0.0d2
  253. ~Fix the cmd-enter bug where it chooses the first word instead of the selected word
  254. ~Click in the R2D2 icon to turn typing on.
  255. ~No way to set the Switch Database hotkey
  256.  
  257. • Acknowledgements
  258.  
  259. This program, like many of my others, would never have gotten here without the help of my friends.  Thanks!
  260.  
  261. Thanks to Jager, Quinn, and Rhys for their ideas and suggestions for ObiWan in the initial design phase.  Thanks you J&Q for the initial parsing of the PInterfacesHelp file and the colour icons.  Thanks also to the UCC, Curtin, Todd (have fun at Momentum!), Steve, c.s.m.p, plaza, ftp.apple.com, Stephen, and anyone who uses ObiWan!  Thanks to Greg and the guys at Metrowerks for including ObiWan and giving me a license to their wonderful compiler.  ObiWan is written in Metrowerks Pascal - still in its early days, but very nice!  Master Yoda is still written in THINK Pascal (it uses Objects)!  Special thanks go to those brave souls who risked life and Mac beta testing an unknown program.
  262.